﻿using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using CI.Models.Production;
using CI.Models.Production.Interfaces;

namespace CI.Models
{
    public interface IJob
    {
        Guid ID { get; }

        decimal SetupCost { get; }

        //TODO:Remove!
        IJob ParentJob { get; }
        //TODO:Remove!
        ObservableCollection<IJob> ChildJobs { get; }
        IEnumerable<T> GetChildJobs<T>();

        IQuantityCalculator<decimal> Cost { get; }

        IQuantityCalculator<TimeSpan> Time { get; }

        bool IsPinned { get; set; }

        IOwner Owner { get; set; }
        Activity Activity { get; }
    }
}